import game.tcturtle
import random
import math


class CombatTurtle(game.tcturtle.TurtleParent):

    # 在菜单中乌龟名字的显示
    def class_name():
        return "kx_polangdui"

    # 在菜单中乌龟描述的显示
    def class_desc():
        return "The King of the Combat Turtles"

    # 绘制鱼的形状，使得外表更加契合主题 取乘风破浪之意
    def class_shape():
        return ((15, math.sqrt(160), math.sqrt(41), 7, 4, math.sqrt(65), math.sqrt(65), 4, 7, math.sqrt(41), math.sqrt(160)), (0, 0.5*math.pi/3, math.pi/3, 1.5*math.pi/3, 1.5*math.pi/3, (7/9)*math.pi, (23/18)*math.pi, 1.5*math.pi, 1.5*math.pi, (5/3)*math.pi, (11/6)*math.pi))

    # 乌龟初始化时所定义的相关属性
    # 此处参照wanderer_turtle设置一个随机移动发生器
    # 以便让乌龟在出生状态做随机运动

    def setup(self):
        (self.head, self.wait) = (180, 6.18)
        self.dodge_range = 0.25*self.missile_range



    def step(self):
        # 如果敌我之间存在视线
        if(self.line_of_sight() == True):
            
            # self.right()
            # self.forward()
            # 根据随机数发生器模拟躲避效果
            self.wait -= 1
            if(self.wait <= 0):
                (self.head, self.wait) = self.randomize()
            self.turnto(self.head)
            self.forward()

            # 在保证较高命中率和较快射击速度的前提下，选择最小旋转角为15°
            if(self.can_shoot and abs(self.relative_heading_towards()) <= 10):
                self.turnto()
                self.shoot()

            # 尝试躲避敌方子弹 当敌方发射子弹时 作横向位移 子弹经过后再回到原轨道
            if(self.other_can_shoot):
                self.left()
                self.forward()
            
           

        # 不存在视线就保持圆周运动
        else:
            self.left(0.618)
            self.forward(0.618)

    def randomize(self):
        rh = random.randrange(-179, 181)
        # 将随机数设置为常量 增加躲避概率
        rt = 3

        return (rh, rt)
